package com.penghaisoft.microwms.product.service;


import java.util.List;

import com.penghaisoft.microwms.common.dto.ConProCondDto;
import com.penghaisoft.microwms.common.dto.ProCountingDto;
import com.penghaisoft.microwms.common.dto.ProStorageDto;
import com.penghaisoft.microwms.common.dto.Resp;
import com.penghaisoft.microwms.common.page.Pager;
import com.penghaisoft.microwms.common.wms.model.MesConProRequired;
import com.penghaisoft.microwms.common.wms.model.ProStorageSn;
import com.penghaisoft.microwms.common.wms.model.ProStorageSnChkHis;
import com.penghaisoft.microwms.common.wms.model.RawLockLog;

/**
 * @Description 成品库存明细表 service
 * @author luoteng
 * @date 2018年6月6日 下午2:50:00 
 * @version 1.0
 */
public interface IProStorageSnService{
	
	public Resp create(ProStorageSn proStorageSn);

	public Resp delete(ProStorageSn proStorageSn);
	
	public Pager<ProStorageSn> findListByCondition(int page, int rows,ProStorageSn condition);
	
	public ProStorageSn findById(String id);
	
	public Resp update(ProStorageSn proStorageSn);

	public Pager<ProStorageDto> findStorageListByCondition(int page, int rows, ProStorageDto proStorageDto);
	
	public Pager<ProStorageDto> findStorageListByConditionHZ(int page, int rows, ProStorageDto proStorageDto);

	public List<ProStorageSn> queryByAny(ProStorageSn proStorageSn);

	/** 
	* @Title: queryLose 
	* @Description:根据盘点单号，合同号 (型号类型)查询盘亏数据 
	* @param @param proCountingDto
	* @param @return  参数说明 
	* @return List<ProStorageSn>    返回类型
	* @author jzh 
	* @throws 
	*/
	public List<ProStorageSn> queryLose(ProCountingDto proCountingDto);
	/**
	 * @Description:成品冻结解冻查询
	 * @param proStorageSn
	 * @return
	 */
	public List<ProStorageSn> findProStorageSnByCondition(ProStorageSn proStorageSn);
	/**
	 * @Description:成品冻结解冻
	 * @param proStorageSn
	 * @return
	 */
	Resp updateProStorageSnStatus(List<ProStorageSn> list, RawLockLog rawLockLog);

	public Resp updateProStorageSnWl(ProStorageSn proStorageSn);

	public Resp updateProStorageSn(ProStorageSn proStorageSn);
	
	public Resp updateProStorageSnNew(ProStorageSn proStorageSn, ProStorageSnChkHis proStorageSnChkHis);

	/** 
	* @Title: findProStorageSnCharge 
	* @Description: 记账in
	* @author jzh 
	* @throws 
	*/
	public Pager<ProStorageSn> findProStorageSnCharge(int page, int rows, ProStorageSn proStorageSn);

	/** 
	* @Title: findChargeOut 
	* @Description: 记账出库
	* @author jzh 
	* @throws 
	*/
	public Pager<ProStorageSn> findChargeOut(int page, int rows, ProStorageSn proStorageSn);

	/** 
	* @Title: createOut 
	* @Description:记账入库新增
	* @param @param proStorageSn
	* @param @return  参数说明 
	* @return Resp    返回类型
	* @author jzh 
	* @throws 
	*/
	public Resp createChargeOut(ProStorageSn proStorageSn);

	/** 
	* @Title: updateChargeOut 
	* @Description: 记账入库修改 
	* @param @param proStorageSn
	* @param @return  参数说明 
	* @return Resp    返回类型
	* @author jzh 
	* @throws 
	*/
	public Resp updateChargeOut(ProStorageSn proStorageSn);

	/** 
	* @Title: batchUpdateProContact 
	* @Description: 批量修改成品合同号
	* @param @param proStorageSn
	* @param @return  参数说明 
	* @return Resp    返回类型
	* @author jzh 
	* @throws 
	*/
	public Resp batchUpdateProContact(ProStorageSn proStorageSn);

	/** 
	* @Title: findConProRequired 
	* @Description: 通过合同号，型号查询销售报表数据 
	* @param @param conProCondDto
	* @param @return  参数说明 
	* @return List<MesConProRequired>    返回类型
	* @author jzh 
	* @throws 
	*/
	public List<MesConProRequired> findConProRequired(ConProCondDto conProCondDto);

	/** 
	* @Title: findStorageListExp 
	* @Description: 成品库存导出 
	* @param @param proStorageDto
	* @param @return  参数说明 
	* @return List<ProStorageDto>    返回类型
	* @author jzh 
	* @throws 
	*/
	public List<ProStorageDto> findStorageListExp(ProStorageDto proStorageDto);
	
	public List<ProStorageDto> findStorageListExpHZ(ProStorageDto proStorageDto);

	/** 
	* @Title: findStorageSnListExp 
	* @Description:成品明细导出 
	* @param @param proStorageSn
	* @param @return  参数说明 
	* @return List<ProStorageSn>    返回类型
	* @author jzh 
	* @throws 
	*/
	public List<ProStorageSn> findStorageSnListExp(ProStorageSn proStorageSn);
	
	/** 
	* @Title: findKulingList 
	* @Description: 成品库龄超期 
	* @param @param page
	* @param @param rows
	* @param @param proStorageSn
	* @param @return  参数说明 
	* @return Pager<ProStorageSn>    返回类型
	* @author jzh 
	* @throws 
	*/
	public Pager<ProStorageSn> findKulingList(int page, int rows, ProStorageSn proStorageSn);
	
	/**  
	 * @Title: findQuantitiyProduct
	 * @Description:   接口-查询成品库存
	 * @author Lengxf  
	 * @date 2019年3月11日    
	 */  
	public Pager<ProStorageSn> findQuantitiyProduct(int page, int rows, ProStorageSn condition);
	
	/**  
	 * @Title: findQuantitiyProductToSn
	 * @Description:   接口-查询成品库存明细
	 * @author Lengxf  
	 * @date 2019年3月11日    
	 */  
	public Pager<ProStorageSn> findQuantitiyProductToSn(int page, int rows, ProStorageSn condition);
	
	public Pager<ProStorageSn> queryStorageChangeList(int page, int rows, ProStorageSn proStorageSn);
	
	public List<ProStorageSn> findQuantitiyProductInTime(ProStorageSn condition);
}
